package com.todo.member.application.service;

import com.todo.member.application.entity.bo.MemberVipInfoBO;
import com.todo.member.common.enums.MemberVipStatusEnum;
import com.todo.member.common.enums.MemberVipTypeEnum;

import java.util.List;

/**
 * @author azhebuxing
 * @date 2025/3/7 01:03
 * @description
 */
public interface MemberVipInfoService {

    /**
     * 插入会员信息
     *
     * @param memberVipInfoBO
     * @return
     */
    Boolean insertMemberVipInfo(MemberVipInfoBO memberVipInfoBO);

    /**
     * 更新会员信息
     *
     * @param memberVipInfoBO
     * @return
     */
    Boolean updateMemberVipInfo(MemberVipInfoBO memberVipInfoBO);

    /**
     * 根据主键删除会员信息
     *
     * @param id
     * @return
     */
    Boolean removeMemberVipInfoById(Long id);

    /**
     * 根据主键查询会员信息
     *
     * @param id
     * @return
     */
    MemberVipInfoBO queryMemberVipInfoById(Long id);

    /**
     * 根据VIPCode查询有效的会员信息
     *
     * @param vipCode
     * @return
     */
    List<MemberVipInfoBO> queryVipInfoByVipCode(String vipCode);

    /**
     * 根据VIPType查询会员信息列表
     *
     * @param vipType
     * @return
     */
    List<MemberVipInfoBO> queryVipInfoListByVipCode(MemberVipTypeEnum vipType);

    /**
     * 更新会员信息状态
     *
     * @param id
     * @param oldStatus
     * @param newStatus
     * @return
     */
    Boolean updateMemberVipInfoStatusById(Long id, MemberVipStatusEnum oldStatus, MemberVipStatusEnum newStatus);

    /**
     * 查询有效的会员信息列表
     *
     * @return
     */
    List<MemberVipInfoBO> queryEffectiveMemberVipInfoList();
}
